/**
 * Copyright 2006 gworks.com.au
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License. (http://www.apache.org/licenses/LICENSE-2.0)
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed 
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
 * the specific language governing permissions and limitations under the License.
 *
 * <dhamma-message src="Atisha (11th century Tibetan Buddhist master)">
 * 	The greatest achievement is selflessness. The greatest worth is self-mastery.
 * 	The greatest quality is seeking to serve others. The greatest precept is continual awareness.
 * 	The greatest medicine is the emptiness of everything. The greatest action is not conforming with the worlds ways.
 * 	The greatest magic is transmuting the passions. The greatest generosity is non-attachment.
 * 	The greatest goodness is a peaceful mind. The greatest patience is humility.
 * 	The greatest effort is not concerned with results. The greatest meditation is a mind that lets go.
 * 	The greatest wisdom is seeing through appearances. 
 * </dhamma-message>
 */
package au.com.gworks.jump.app.wiki.client.navigation;

import java.util.Map;

import org.javaongems.client.Gem;
import org.javaongems.client.forms.FormController;
import org.javaongems.client.winctrls.ListView;
import org.javaongems.client.winctrls.ListViewListener;

import au.com.gworks.jump.app.wiki.client.service.WikiRpc;
import au.com.gworks.jump.app.wiki.client.service.WikiRpcAsync;

import com.google.gwt.user.client.ui.SourcesTabEvents;
import com.google.gwt.user.client.ui.TabListener;

public class MyspacesController extends FormController 
		implements	ListViewListener,	// for listview changes
					TabListener
					{
	
	private MyspacesForm 			window;
	private WikiRpc.MyspacesInfo 	model;
	
	public Object getModel() {
		return model;
	}
	
	public void setUp(Map config) {
		super.setUp(config);
		window = new MyspacesForm(this);
		window.setModal(true);
		setForm(window);
		int[] leftTopWidthHeight = (int[]) config.get("top.left.width.height.array");
		if (leftTopWidthHeight == null)
			leftTopWidthHeight = new int[] {0, 0, 350, 200};
		leftTopWidthHeight[2] = 350;
		leftTopWidthHeight[3] = (int) (leftTopWidthHeight[3] * 0.8);
		window.place(leftTopWidthHeight);
	}

	// events 
	public void onFormShow() {
		super.onFormShow();
		onFormRefresh();
	}
	
	public void onFormRefresh() {
		WikiRpcAsync rpc = (WikiRpcAsync) Gem.stone.openService(WikiRpc.SERVICE_CTX);
		formLoadCallbackDecoration.setStatus("querying spaces...");
		rpc.openMyspaces(callback);	// always want to view latest
	}
	
	public void onFormResized() {
		window.resizeListView();
	}
	
	public void onSuccess(Object result) {
		model = (WikiRpc.MyspacesInfo) result;
		window.setMyspacesModel(model);
		window.show();
	}

	public void onClick(ListView vw, int dataRow, int col) {
	}

	public void onDblClick(ListView vw, int dataRow, int col) {
		String nm = model.items[dataRow].namespace;
		Gem.stone.openParameterisedUrl(new String[] {nm, null, "/"});
	}

	public boolean onBeforeTabSelected(SourcesTabEvents sender, int tabIndex) {
		return true;
	}

	public void onTabSelected(SourcesTabEvents sender, int tabIndex) {
		window.switchToTab(tabIndex);
	}
}